/*
 * Copyright 2006 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.user.client.ui.impl;

import com.google.gwt.user.client.Element;

/**
 * Crazy implementation of {@link com.google.gwt.user.client.ui.impl.FocusImpl}
 * that uses a hidden anchor to serve as a 'proxy' for focus.
 */
public class FocusImplSafari extends FocusImpl {

  public native void blur(Element elem) /*-{
    elem.__anchor.blur();
  }-*/;

  public native Element createFocusable() /*-{
    var div = document.createElement('div');
    var input = document.createElement('input');
    input.type = 'text';
    input.style.zIndex = -1;
    input.style.position = 'absolute';

    div.addEventListener(
      'click',
      function() { input.focus(); },
      false);

    div.appendChild(input);
    div.__anchor = input;
    return div;
  }-*/;

  public native void focus(Element elem) /*-{
    elem.__anchor.focus();
  }-*/;

  public native int getTabIndex(Element elem) /*-{
    return elem.__anchor.tabIndex;
  }-*/;

  public native void setAccessKey(Element elem, char key) /*-{
    elem.__anchor.accessKey = key;
  }-*/;

  public native void setTabIndex(Element elem, int index) /*-{
    elem.__anchor.tabIndex = index;
  }-*/;
}
